Page({

  /**
   * 页面的初始数据
   */
  data: {
    id: null, //用户id
    avatarUrl: null, //用户头像url
    nickName: null, //用户昵称
    showLogin: false, //控制登录模态框
    isLogin: false //是否登录
  },

  /**
   * 跳转到订单页
   */
  jumpOrder(event) {
    this.checkLogin()
    if (this.data.isLogin) {
      const currentIndex = event.currentTarget.dataset.index
      wx.navigateTo({
        url: `/pages/order/order?currentIndex=${currentIndex}`,
      })
    }
  },

  /**
   * 处理收货地址跳转事件
   */
  handlerAddress() {
    this.checkLogin()
    if (this.data.isLogin) {
      //获取全局app对象
      const app = getApp()
      //将全局索引设置为1,代表是从“我的”里点击进入的收货地址
      app.globalData.addressIndex = 1
      //跳转到地址选择页
      wx.navigateTo({
        url: "/pages/address/address"
      })
    }
  },

  /**
   * 处理个人信息跳转事件
   */
  handlerUser() {
    this.checkLogin()
    if (this.data.isLogin) {
      //跳转到地址选择页
      wx.navigateTo({
        url: "/pages/user/user"
      })
    }
  },

  /**
   * 退出登录
   */
  logout() {
    wx.showModal({
      title: "温馨提示",
      content: "确定要退出登录吗？",
      success: res => {
        if (res.confirm) {
          //重置登录组件状态
          const component = this.selectComponent("#login-modal");
          component.setData({
            isLogin: false,
            show: false
          })
          //删除用户登录信息
          wx.removeStorageSync("user")
          //清空数据
          this.setData({
            id: null,
            avatarUrl: null,
            nickName: null,
            isLogin: false
          })
        }
      }
    })
  },

  /**
   * 处理登录授权
   * @param {*} event 
   */
  handlerLoginChange(event) {
    const newVal = event.detail.newVal;
    if (newVal) {
      // 刷新页面
      this.onShow()
    }
  },

  /**
   * 检查用户登录
   */
  checkLogin() {
    const user = wx.getStorageSync("user")
    if (user) {
      //设置数据
      this.setData({
        showLogin: false,
        isLogin: true,
        id: user.id,
        avatarUrl: user.avatarUrl,
        nickName: user.nickName,
      })
    } else {
      //重置当前页面数据，并弹出登录提示框
      this.setData({
        id: null,
        avatarUrl: null,
        nickName: null,
        showLogin: true,
        isLogin: false
      })
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.checkLogin()
  }
})